LDPC performance improvement using SBE-LBD decoding method and LBD collision reduction

ABSTRACT

Systems and methods are described for performing Layered Belief LDPC decoding on received Standard Belief LDPC encoded data bursts. In on implementation, a receiver: demodulates a signal, the demodulated signal including a noise corrupted signal derived from a codeword encoded using standard belief LDPC encoding; converts the noise corrupted signal derived from the standard belief LDPC encoded codeword to a noise corrupted signal derived from a layered belief LDPC encoded codeword; and decodes the noise corrupted signal derived from the layered belief LDPC encoded codeword using a layered belief LDPC decoder. In further implementations, systems are described for reducing collisions in Layered Belief LDPC decoders that occur when multiple parity checks need the same soft decision at the same time. In these implementations, elements in an original LBD decoder table are rearranged to increase the distance between elements specifying the same location in a RAM where soft decisions are stored.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional of and claims the benefit of U.S.patent application Ser. No. 15/237,341 filed on Aug. 15, 2016, andissued as U.S. Pat. No. 10,270,466 on Apr. 23, 2019.

TECHNICAL FIELD

The present disclosure relates generally to systems and methods thatimplement LDPC coding techniques. More particularly, embodiments of thepresent disclosure are directed toward systems and methods for i)performing Layered Belief LDPC decoding using Standard Belief LDPCencoded data, and ii) reducing collisions in implementations of LayeredBelief LDPC decoders.

BACKGROUND

Low-density parity-check (LDPC) codes are linear error correcting blockcodes that may be used to transmit data over a noisy transmissionchannel. LDPC codes are defined by a generator matrix and a sparseparity check matrix. On the transmit/encoding side of a network, thecodeword of an input string may be obtained by multiplying the input bitstring by the generator matrix. In other words, given a k-bit messagei={i₀, i₁, i₂, . . . , i_(k−1)} that is a vector of length k, a codewordC(i) may be obtained by the expression C(i)=iG, where G is the generatormatrix. For example, suppose that i is the three-bit 010 and

$G = {\begin{pmatrix}1 & 0 & 0 & 1 & 1 & 1 \\0 & 1 & 0 & 1 & 1 & 0 \\0 & 0 & 1 & 1 & 0 & 1\end{pmatrix}.}$Then the codeword C(i) is 010110 where the first three bits 010 are theoriginal information bits and the last three bits 110 are parity bitsobtained from the three information bits.

As the codeword is transmitted over a noisy transmission channel, errorsmay be introduced into the codeword such that the received vector ofbits on the receiver/decoding side is not same as the original codeword(e.g. is in positions that should be 0 s and 0 s in positions thatshould be is.) On the receiver/decoder side of LDPC coding, the paritycheck matrix may be used to determine if a given received vector of bitsis a valid codeword (i.e., has no errors). This can be expressed asHC(i)^(t)=0 where H is r×n parity check matrix, where r=n−k is thenumber of parity bits in the codeword, n is the number of total bits inthe codeword, and C(i)^(t) is the transpose of the received vector. Eachrow of the parity check matrix H represents an equation that must besatisfied while each column represents bits in the received codeword.

The parity check matrix may be used to correct errors in receivedvectors. As shown in FIG. 1, for a particular parity check matrix H,this process of converging on a codeword may be illustrated by abipartite graph, comprising bit nodes and parity nodes, where each bitnode represents a code symbol and each parity node represents a parityequation. A line is drawn between a bit node and a check node if the bitis involved in the parity equation, and decoding is accomplished bypassing messages along the lines of the graph.

From check nodes m to bit nodes n, each check node may provide to aconnected bit node an estimate of the value of that bit node (i.e.,probability that the bit node is 0 or 1) based on the informationreceived from other connected bit nodes. For example, using theillustrated example of FIG. 1, if the sum of n_(4,) n₅ and n₈ isbelieved to be 0 to m₁, then m₁ would indicate to n₁ that the value ofn₁ is believed to be 0 (because this satisfies the parity equationn₁+n₄+n₅+n₈=0); otherwise n₁ will indicate to n₁ that the value of n₁ isbelieved to be 1.

From bit nodes n to check nodes m, each bit node may broadcast toconnected check nodes an estimate of its own value based on theinformation received from other connected check nodes. In the aboveexample, n₁ is connected to check nodes m₁ and m₃. If the informationreceived from m₃ to n₁ indicates that there is a high probability thatthe value of n₁ is 0, then n₁ would notify m₁ that an estimate of n₁'svalue is 0. As another example, in cases where the bit node has morethan two connected check nodes, the bit node may rely on a majority vote(soft decision) on the feedback coming from its other connected checknodes before reporting that soft decision to the check node. The aboveprocess may be repeated iteratively until all bit nodes are consideredto be correct (i.e., all parity check equations are satisfied) or untila predetermined maximum number of iterations is reached, whereby adecoding failure may be declared.

Standard belief decoding is an LDPC decoding scheme that applies theprocess described above. In SBD, the decoder works through each andevery one of the rows of the parity check matrix, one by one. Afterworking through every row of the parity check matrix, the bit nodes arethen updated and the process may iterate. By contrast, in the morerecently developed LDPC layered-belief decoding (LBD) scheme,information gained going through each row of the parity check matrix(i.e., each equation) may be used when making decisions in subsequentrows. Particularly, after solving a parity equation for one row, softdecisions on bit nodes are stored and made available so that the decodermay use this information immediately when considering another row (i.e.,check node) of the parity check matrix. This process is described ingreater detail in U.S. Pat. No. 8,402,341. Consequently, LBD typicallyconverges on a codeword using about half as many iterations as SBD.Additionally, in LBD, each iteration takes about roughly half the timeas in SBD, thus providing much higher throughput. Accordingly, LBD mayprovide significant advantages over SBD.

SUMMARY

In accordance with embodiments of the disclosed technology, systems andmethods are described for i) performing Layered Belief LDPC decodingusing Standard Belief LDPC encoded data, and ii) reducing collisions inimplementations of Layered Belief LDPC decoders.

In a first embodiment, a receiver includes a demodulator and a decoder.The demodulator is configured to demodulate a signal received over acommunication channel, where the demodulated signal includes a noisecorrupted signal derived from a codeword encoded using standard beliefLDPC encoding. The decoder is configured to convert the noise corruptedsignal derived from the standard belief LDPC encoded codeword to a noisecorrupted signal derived from a layered belief LDPC encoded codeword;and decode the noise corrupted signal derived from the layered beliefLDPC encoded codeword using a layered belief LDPC decoder. In particularimplementations, the communication channel is a satellite networkcommunication channel, the receiver is a receiver of a satellitegateway, and the codeword was encoded by a user satellite terminal.

In implementations, converting the noise corrupted signal includesreceiving a codeword of the form [i₀, i₁, i₂, . . . , i_(k−1), p₀, p₁,p₂, p_(n−k−1)], where k is a number of information bits, n is a totalnumber of bits, and n-k is a number of parity bits, and changing it tothe form [i₀, i₁, i₂, i_(k−1), p₀, p_(W), p_(2W), . . . , p_((M−1)W),p₁, p_(2W+1), . . . , p_(n−k−1)], where M is a number of parallelcomputation engines and W=(n−k)/M.

In a second embodiment, a method includes: receiving an original layeredbelief LDPC decoder table, the original layered belief LDPC decodertable including multiple rows, each row associated with a group ofparity check equations and containing elements, where each of theelements specifies a location in a random access memory (RAM) where asoft decision is stored; and modifying the original layered belief LDPCdecoder table by increasing the distance between a first element and asecond element of the original decoder table that specify a samelocation in the RAM. In implementations, modifying the original layeredbelief LDPC decoder table includes at least one of the followingoperations: rearranging two or more of the rows; rearranging two or moreelements within one of rows; or adding a spacer row between two of therows.

Other features and aspects of the disclosure will become apparent fromthe following detailed description, taken in conjunction with theaccompanying drawings, which illustrate, by way of example, the featuresin accordance with various embodiments. The summary is not intended tolimit the scope of the invention, which is defined solely by the claimsattached hereto.

BRIEF DESCRIPTION OF THE DRAWINGS

The technology disclosed herein, in accordance with one or moreembodiments, is described in detail with reference to the followingfigures. The drawings are provided for purposes of illustration only andmerely depict typical or example embodiments of the disclosedtechnology. These drawings are provided to facilitate the reader'sunderstanding of the disclosed technology and shall not be consideredlimiting of the breadth, scope, or applicability thereof. It should benoted that for clarity and ease of illustration these drawings are notnecessarily made to scale.

FIG. 1 shows a parity bit matrix and a bipartite graph showing a processof converging on a codeword using LDPC coding.

FIG. 2A illustrates an exemplary communication system in which thedisclosed technology may be implemented.

FIG. 2B illustrates an exemplary satellite communication system in whichthe disclosed technology may be implemented.

FIG. 3A is an operational flow diagram illustrating an example methodthat may be implemented by a receiver in accordance with exampleembodiments of the disclosed technology.

FIG. 3B is an operational flow diagram illustrating an example method ofconverting SBE encoded data to LBE encoded data in accordance withexample embodiments of the disclosed technology.

FIG. 4 shows a parity bit table illustrating an example SBE to LBEconversion process for a codeword including 20 parity bits and 4parallel computation engines.

FIG. 5 is a plot illustrating the mean symbol energy to noise ratio(EsNo) in decibels as a function of the burst length in slots for QPSKmodulated signals that was required to achieve a packet loss rate (PLR)of 1E-3 using an LBE-LBD scheme and using an SBE-LBD scheme.

FIG. 6 is a block diagram showing an LBD decoder that may be implementedto decode codewords in accordance with example embodiments.

FIG. 7A illustrates an original decoder table for the LBD decoder ofFIG. 5 that comprises elements specifying the locations of softdecisions stored in RAM.

FIG. 7B illustrates a modified decoder table, after modifying theoriginal decoder table of FIG. 7A.

FIG. 8 is an operational flow diagram illustrating an example method ofmodifying an original decoder table of an LBD decoder to reducecollisions.

FIG. 9 is a plot illustrating the PLR versus EsNo performance of an LBDdecoder that uses an original decoder table and of an LBD decoder thatuses a decoder table modified in accordance with the method of FIG. 8.

FIG. 10 illustrates an example computing module that may be used inimplementing features of various embodiments.

FIG. 11 illustrates an example chip set that can be utilized inimplementing features of various embodiments.

The figures are not intended to be exhaustive or to limit the inventionto the precise form disclosed. It should be understood that theinvention can be practiced with modification and alteration, and thatthe disclosed technology be limited only by the claims and theequivalents thereof.

DETAILED DESCRIPTION

As noted above, Layered Belief LDPC decoding (LBD) may providesignificant throughput and convergence speed advantages over StandardBelief LDPC decoding (SBD). However, in current implementations ofcommunication systems, Standard Belief LDPC encoding (SBE) is widelyused by transmitters. Layered Belief LDPC encoding (LBE) is notsupported by the majority of existing transmitters in use today. This isparticularly the case in current satellite communication systems whereuser terminal transmitters (e.g., VSAT terminals) encode data using SBE.Short of replacing the user terminal transmitters with LBE compatiblehardware, which is unfeasible and costly, users of receivers thatreceive the SBE messages must use SBD even when the receivers themselvesare capable of performing LBD.

Embodiments of the technology disclosed herein address these issues byproviding a system and method for performing LBD on received SBE databursts. Particularly, SBE data received at the receiver is firstconverted to LBE data, and then the LBE data is decoded using a LBD.Using this SBE-LBD decoding method, receivers that utilize LBD mayrealize the higher throughput and faster convergence benefits even whenSBE data bursts are received by the receiver. Further still, newerreceivers that employ an LBD scheme may be made backward compatible withexisting transmitters that only support SBE.

In further embodiments of the technology disclosed herein, systems andmethods are described for reducing collisions in LBD decoders that occurwhen multiple parity checks need the same soft decision at the sametime. In accordance with embodiments, elements in an original LBDdecoder table are rearranged to increase the distance between elementsspecifying the same location in a RAM where soft decisions are stored.In implementations, the original LBD decoder table may be modified asfollows to reduce collisions: two or more rows of the original LBDdecoder table may be rearranged, the elements of a given row may berearranged, and spacer rows may be added into the table.

SBE-LBD Decoding System and Method

FIG. 1A illustrates an exemplary communication system in which thedisclosed technology may be implemented to provide SBE-LBD decoding. Itshould be noted that although embodiments disclosed herein will bedescribed primarily with reference to satellite communication systems,the disclosed SBE-LBD system and method may be implemented in othercommunication systems that utilize SBE/SBD and LBE/LBD coding schemes.

As shown in the communication system of FIG. 1A, a transmitter 100 maytransmit an SBE data signal over a communication channel 200 to areceiver 300. In various embodiments, the data signal may carry image,video, audio, and other information. During transmission, the datasignal may be corrupted by noise. Transmitter includes an encoder 110that includes an SBE module 120 that encodes user data (i.e., an inputbit stream) using standard belief LDPC encoding. For example, SBE module120 may generate codewords on an input bit stream using generatormatrices that output codewords having a certain number of parity bits.In the exemplary communication environment of FIG. 1, receiver 300 isable to receive the noisy SBE data signal and decode it using LBD.Receiver 300 comprises a decoder 310 with SBE to LBE encoding conversionmodule 311 and an LBD module 312. As will be further described below,SBE to LBE conversion module 311 receives as an input a noisy SBE datasignal and outputs a noisy LBE data signal by changing the positions ofparity bits within the SBE data signal. LBD module 312 may then decodethe converted LBE signal output by conversion module 311.

With reference now to FIG. 1B, which illustrates an exemplary satellitecommunication system in which transmitter 100 and receiver 300 may beimplemented, in one exemplary embodiment transmitter 100 includes SBEencoder 110, an interleaver 120, a modulator 130, a transmit filter 140,and a mixer 150. In embodiments, transmitter 100 may be a transmitter ofa user terminal, such as, for example, a very small aperture terminal(VSAT). Although the components of transmitter 100 are shown in aparticular order in this example, one of ordinary skill in the artreading this description will understand that the order of componentscan be varied and some components may be excluded. One of ordinary skillin the art will understand how other transmitter configurations can beimplemented, and that one or more of these components can be implementedin either digital form (e.g., as software running on a DSP or otherprocessing device, with the addition of a DAC) or as analog components.

Bit source 102 provides information bits to be transmitted to SBEencoder 110. The information can include, for example, images, video,audio, text and other data. As described above, SBE encoder 110 performsforward error correction by using Standard Belief LDPC encoding to addredundancy to information data bits signal 102 using parity bits. Byadding redundant information to the data being transmitted through thechannel, this improves the capacity of the channel.

Interleaver 120 scrambles the encoded data bits by rearranging the bitsequence order to make distortion at receiver 300 more independent frombit to bit. In other words, interleaver 106 rearranges the ordering ofthe data sequence in a one to one deterministic format. Modulator 130modulates the interleaved bits using a bit-to-symbol modulation schemeto form complex-valued data symbols. The interleaved bits may bemodulated using any of a number of different modulation techniques.Examples of modulation schemes that can be implemented include AmplitudePhase Shift Keying (APSK), Quadrature Phase Shift Keying (QPSK),π/M-MPSK, other orders of Multiple Phase Shift Keying MPSK, QuadratureAmplitude Modulation (QAM), and so on.

Subsequently, transmit filter 140 converts the complex-valued datasymbols to a waveform signal using a pulse shaping function with animpulse response. Examples of transmit filters that may be implementedinclude root-raised cosine (RRC) filters and partial response filters.Following filtering of the transmit signals at filter 140, mixer 150 oftransmitter 100 mixes the waveform signal of the filter outputs with acarrier signal z(t) from a local oscillator (not shown) to modulate itonto an appropriate carrier for transmission. In embodiments, thecarrier signal function z_(m)(t) for a particular carrier m may berepresented as

${\frac{1}{\sqrt{M_{c}}}e^{j{({{2\pi\; f_{m}t} + \theta_{m}})}}},$where f_(m), is the center frequency and θ_(m) is the carrier phase ofm-th channel.

In embodiments where the satellite communication system is amulticarrier system, an adder (not shown) may be provided to add outputsignals from a plurality of transmitting carrier sources and provide acomposite signal. The output signal from the transmitter (e.g., acomposite signal) is transmitted to satellite transponder 200. Attransponder 200, the signal may be processed through an inputmultiplexing (IMUX) filter (not shown) to select the desired carrier,amplified (e.g., using a traveling-wave tube amplifier), and outputusing an output multiplexing (OMUX) filter.

On the downlink reception side, receiver 300 receives an input signal ona carrier from satellite transponder 200 and outputs an estimate of thecarrier's bits. In this exemplary embodiment, receiver 300 includes amixer 320, a matching receiver filter 330, a corresponding demodulator340, a deinterleaver 350, and an SBE-LBD decoder. 310. In embodiments,receiver 300 may be a receiver of a satellite gateway. Although thecomponents of receiver 300 are shown in a particular order in thisexample, one of ordinary skill in the art reading this description willunderstand that the order of components can be varied and somecomponents may be excluded. One of ordinary skill in the art willunderstand how other receiver configurations can be implemented, andthat one or more of these components can be implemented in eitherdigital form (e.g., as software running on a DSP or other processingdevice, with the addition of a DAC) or as analog components.

As illustrated, mixer 320 mixes the input waveform signal received fromtransponder 200 with a carrier down conversion signal e(t) from a localoscillator (not shown) to downconvert the received signal to baseband.In embodiments, the carrier down conversion signal may be represented ase^(−j(2πf) ^(m) ^(t+θ) ^(m) where f) _(m) is the center frequency andθ_(m) is the carrier phase of the m-th channel. At block 330, a receiverfilter corresponding to (i.e., matched to) transmit filter 140 isapplied to the downsampled carrier signal. Subsequently, at demodulator340 the signal is demodulated using a symbol-to-bit demodulation schemethat reverses the bit-to-symbol modulation of transmitter modulator 130.For example, demodulator 340 may implement demodulation schemes such asAPSK, QPSK, MPSK, QAM and so forth. The demodulated signal may then passthrough deinterleaver 350, which reverses the function of interleaver120.

SBE-LBD decoder 310 then decodes the demodulated signal, which includesdata that was encoded using SBE. In embodiments, decoder 310 employs Mparallel engines to efficiently decode the received signals. Forexample, M may correspond to the groupings of M bit nodes forprocessing. The operation of SBE-LBD decoder is illustrated by FIGS. 3Aand 3B, which illustrate a method 400 for decoding received SBE encodedata using LBE.

At operation 410, noisy SBE encoded data is received at SBE-LBD decoder310. As noted above, noise may have been introduced into the data signalduring transmission from the transmitter to the receiver. The noisy SBEencoded data may be received as a data burst comprising a plurality ofSBE coded codewords (e.g., codewords contained in packets of the databurst). At operation 420, the noisy SBE encoded data is converted tonoisy LBE encoded data by changing the position of the parity bitswithin the encoded data while passing through the information bitswithout changing their positions. FIG. 3B illustrates an exemplaryimplementation of operation 420 with respect to a received SBE encodedcodeword. At operation 421, an SBE encoded codeword is received. Thereceived SBE encoded codeword including k information bits, and n totalbits may be represented by vector Form (1):CSBE=[i ₀ ,i ₁ ,i ₂ , . . . ,i _(k−1) ,p ₀ ,p ₁ ,p ₂ , . . . ,p_(n−k−1)]  (1)Where [i₀, i₁, i₂, . . . , i_(k−1)] are information bits, [p₀, p₁, p₂, .. . , p_(n−k−1)] are parity bits, and there are n-k total parity bits.

At operation 422, a W×M parity bit table may be defined where W=(n-k)/M,where n-k is the number of parity bits and M is the number of parallelcomputation engines of decoder 310. This is illustrated by FIG. 4, whichshows a parity bit table illustrating an example SBE to LBE conversionprocess for a codeword or vector including 20 parity bits and 4 parallelcomputation engines. As shown, each parity bit of vector (1) issequentially written “row wise” into the table. At operation 423, thecodeword may be converted by specifying the new positions of the paritybits based on a “column wise” reading of the parity bits of the table.

More generally, the output LBE encoded codeword may be represented byForm (2):C _(SBE-LBE)=[i ₀ ,i ₁ ,i ₂ , . . . ,i _(k−1,) p ₀ ,P _(W) ,P _(2W) ,P_((M-1)W) ,p ₁ ,p _(W+1,) p _(2W+1) ,p _(n−k−1)]  (2)Where M is the number of parallel computation engines used by theencoder and W=(n−k)/M. It should be noted that the process forconverting an input SBE codeword to an LBE codeword need not be limitedto using a table. As would be appreciated by one having skill in theart, any process that takes an input codeword or vector of Form (1) andoutputs a codeword or vector of Form (2) may be suitable. For example,instead of using a table, a W×M parity bit matrix may be transposed andread “row wise.”

In one embodiment, the SBE-LBE conversion algorithm may be implementedusing the following source code:

Initialize W = (N−K)/M; i=0; j=0 While (i < W) do While (j<M) doDI_conv(K+i*M+j) = DI (K+j*W+i); j =j +1 End i=i+1 EndWhere N is a number of encoded bits, K is a number of input informationbits, M is a number of parallel computation engines, DI is an originaldecoder input array of SBE format (i.e., the input codeword), andDI_conv is a converted decoder input array of LBE format that is passedto a LBD decoder. As would be appreciated by one having skill in theart, the conversion algorithm, in embodiments, need not be coded in thisprecise form, and any code that takes an input vector of the form [i₀,i₁, i₂, . . . , i_(k−1), p₀, p₁, p₂, . . . , p_(n−k−1)] and changes itto the form i₀, [i₁, i₂, . . . , i_(k−1), p₀, p_(W), p_(2W), p_((M−1)W),p₁, p_(W+1), p_(2W+1), p_(n−k−1)] may be suitable.

Subsequently, after conversion, at operation 430 the noisy LBE encodeddata is decoded using LBD.

FIG. 5 is a plot illustrating the mean symbol energy to noise ratio(EsNo) in decibels as a function of the burst length in slots for QPSKmodulated signals that was required to achieve a packet loss rate (PLR)of 1E-3 using an LBE-LBD scheme and using an SBE-LBD scheme. In thisexample, each slot contains 240 bits. As illustrated, to achieve a 1E-3PLR, the SBE-LBD scheme requires less power than the regular LBE-LBDscheme requires across all burst lengths (or code sizes). The EsNobenefits are especially significant for derived codes.

Collision Reduction in Layered Belief LDPC Decoder

FIG. 6 is a block diagram showing an example LBD decoder that may beimplemented to decode codewords with collision reduction in accordancewith example embodiments. As shown, LBD decoder 500 comprises acontroller 510 for controlling the operation of decoder 500, inputbuffer 520 for buffering an incoming demodulated data signal, softdecision calculator 530, soft decision ram 540, and hard decision ram550.

During operation, LBD decoder 500 receives LBE codewords of ademodulated signal and decodes the codewords (i.e., for each vector,determines the most likely codeword that was received) by applying anLBD decoding process. In some embodiments, LBD decoder 500 may beimplemented in the systems illustrated by FIGS. 2A-2B through the use ofan SBE to LBE encoding conversion module (e.g. module 311) that convertsSBE encoded codewords to LBE encoded codewords.

As described above, in an LDPC-based decoder, a soft decision representsthe probability of a received data bit being a 0 or 1. As each receivedcodeword contains N data bits, N soft decisions are made with respect toreceived codewords. These soft decisions are calculated and updatedusing soft decision calculator 530 and stored in soft decision RAM 540.After a certain number of iterations, hard decision RAM stores harddecisions (i.e., a decision that a bit is definitely 0 or 1) about thevalues of the received data bits. For example, if the probability of abit being 1 or 0 exceeds a predetermined threshold, a hard decision ismade about the bit's value.

With respect to calculating and storing the soft decisions, LBD decoder500 may store a plurality of soft decisions in the same row of the softdecision RAM 540. This provides parallelism in decoding operations andprovides higher decoding throughput. Mathematically, the number of rowsq a codeword occupies in soft decision RAM 540 may be represented asq=N/M, where N is the number of data bits and M is the number ofparallel computation engines (i.e., same as number of soft decisionsstored in the same row of RAM).

FIG. 7A illustrates an original LBD decoder table 600 that is usedduring decoding in conventional LBD decoders that employ parallelism.Each row of the original decoder table is associated with a group of Mparity check equations, and each element of each row specifies alocation in soft decision ram 540 (i.e., the row/column) where a softdecision value is stored. As alluded to above, in LBD decoding, softdecisions on bit nodes are stored in RAM and made available so that thedecoder may use this information immediately when considering anotherrow. In other words, each time a group of parity check equations areused, the updated soft decision values of bits are written back into thesoft decision RAM 540 so that they may be used in using other paritycheck equations.

Although this process increases the speed of decoding, collisions (i.e.,conflicts) may occur if, due to the hardware latency associated withusing a parity check equation, a soft decision is not written back intosoft decision RAM 540 before a subsequent parity check reads the softdecision from soft decision RAM 540. If the soft decision RAM 540 isread before it is updated, the subsequent parity check does not use theupdated soft decision value. Collisions are illustrated by highlightedelements in original LBD decoder table 600. For example, the firstparity check equation (row 1 of the table) estimates and stores decisionvalues in row 3 of RAM 540 (value 3/25) and row 12 of RAM 540 (value12/0). In solving a subsequent parity check equation (row 2 of thetable), rows 3 and 12 of RAM 540 are read from before the results fromsolving the first parity check equation are written into RAM.Accordingly, collisions occur with respect to soft decisions values ofthese bits.

As shown by subsequent highlighted values in original decoder table 600,many collisions (35 in this example) may occur if subsequent paritychecks attempt to use soft decision values before they are written intoRAM from a prior parity check. Such a significant number of collisionsmay degrade the PLR versus EsNo performance of the decoder. This isproblematic as increasing the number of decoder iterations does notconsiderably improve the PLR versus EsNo performance.

Embodiments disclosed herein reduce the number of collisions byrearranging the locations of soft decisions in an original decoder tableto generate a modified decoder table. The modified decoder tableincreases the distance between elements specifying the same location(i.e., row) in soft RAM to avoid collisions. By way of example, considerthe first element 3/25 of original decoder table 600. The next elementthat uses RAM memory address 3 is the fourth element of the second row,3/21. In this example, there are nine elements between 3/25 and 3/21 anda collision occurs. Accordingly, hardware latencies may dictate thatthere needs to be greater than 9 elements (e.g., 11 elements) betweenthe occurrences of two elements that use the same memory address of RAMso that there is enough time to write to the memory address before it isread again.

FIG. 8 is an operational flow diagram illustrating an example process800 of modifying an original decoder table of an LBD decoder to reducecollisions. Method 800 will be described with exemplary reference toFIGS. 7A-7B, which respectively shown original decoder table 600 and anexample modified decoder table 700 that may be generated by process 800.

At operation 810, an original LBD decoder table is received. Forexample, original decoder table 700 may be received. Subsequently, atoperation 820, two or more rows of the original decoder table may berearranged to increase the distance between elements specifying the samelocation in RAM (e.g., soft decision RAM 540). For example, in modifieddecoder table 700, the first row in original decoder table 600 is thethird to last row and the fifth row in original decoder table 600 is theeighth row. In this new arrangement, no collisions occur for any of theelements of rows 5 and 8 of modified decoder table 700.

At operation 830, the elements within a row of the decoder table arerearranged. In embodiments, operation 830 may be applied to a pluralityof rows. In further embodiments, a combination of operations 820(movement of row) and 830 (rearrangement of elements within the row) maybe applied to the rows. For example, in modified decoder table 700, thelast row is the second row of original decoder table 600 with some ofits elements rearranged. At operation 840, one or more spacer rows areadded between rows of the decoder table. For example, in modifieddecoder table 700 the second from the last row is a spacer row. Asshown, the spacer row may contain the same number of elements as otherrows of the modified decoder table. As the spacer row is processed likeother rows in the parity check matrix, but does not store or read softdecisions into/from RAM, it introduces a computation delay betweenread/write operations on the same RAM address.

As would be appreciated by one having ordinary skill in the art,operations 820-840 may be performed in any order to generate a modifieddecoder table that increases the distance between elements specifyingthe same location in RAM. Correspondingly, this increases the amount oftime between read/write operations on the same memory address in RAM,thereby reducing collisions. As these table modification operations(rearrangement of rows, rearrangement of elements within a row, additionof spacer rows) do not change the set of parity equations, the modifieddecoder table 700 may be used to decode data.

Following creation of the modified table, at operation 850 the LBEencoder (e.g., encoder 500) may receive and decode LBE encodedcodewords, writing soft decisions to soft ram (e.g., soft ram 540 usingthe modified decoder table). For example, using modified decoder table700, the number of collisions was reduced from 35 to 4. In someembodiments, the number of collisions may be reduced to 0. As would beappreciated by one having skill in the art, in various embodiments thearrangement of rows and elements in the modified decoder table may beoptimized to reduce collisions based on: the minimum amount of hardwaretime needed to read from or write to a memory address of soft RAM as maybe determined by clock speeds, the latency of soft decision calculatorcircuitry, the number of elements in each row of the decoder table, thetotal number of rows in the decoder table, and other like factors.

FIG. 9 is a plot illustrating the PLR versus EsNo performance of an LBDdecoder that uses an original decoder table and of an LBD decoder thatuses a decoder table modified in accordance with the method of FIG. 8.As illustrated, using the original decoder table, an improvement in areceived signal's EsNo does not appreciably improve the PLR duringdecoding. The error rate remains about the same even with the increasedsignal to noise ratio. By contrast, with collision reduction from usingthe modified decoder table, an improved PLR (several orders of magnitudelower) may be realized as the EsNo of the received signal improves. Insome embodiments, using a modified decoder table the LBD decoder mayrealize performance the same as the theoretical minimum PLR achievablethrough the original decoder table.

FIG. 10 illustrates a computer system 1000 upon which exampleembodiments according to the present disclosure can be implemented.Computer system 1000 can include a bus 1002 or other communicationmechanism for communicating information, and a processor 1004 coupled tobus 1002 for processing information. Computer system 1000 may alsoinclude main memory 1006, such as a random access memory (RAM) or otherdynamic storage device, coupled to bus 1002 for storing information andinstructions to be executed by processor 1004. Main memory 1006 can alsobe used for storing temporary variables or other intermediateinformation during execution of instructions to be executed by processor1004. Computer system 1000 may further include a read only memory (ROM)1008 or other static storage device coupled to bus 1002 for storingstatic information and instructions for processor 1004. A storage device1010, such as a magnetic disk or optical disk, may additionally becoupled to bus 1002 for storing information and instructions.

Computer system 1000 can be coupled via bus 1002 to a display 1012, suchas a cathode ray tube (CRT), liquid crystal display (LCD), active matrixdisplay, light emitting diode (LED)/organic LED (OLED) display, digitallight processing (DLP) display, or plasma display, for displayinginformation to a computer user. An input device 1014, such as a keyboardincluding alphanumeric and other keys, may be coupled to bus 1002 forcommunicating information and command selections to processor 1004.Another type of user input device is cursor control 1016, such as amouse, a trackball, or cursor direction keys for communicating directioninformation and command selections to processor 1004 and for controllingcursor movement on display 1012.

According to one embodiment of the disclosure, SBE-LBD decoding orcreation of modified LBD decoder tables, in accordance with exampleembodiments, are provided by computer system 1000 in response toprocessor 1004 executing an arrangement of instructions contained inmain memory 1006. Such instructions can be read into main memory 1006from another computer-readable medium, such as storage device 1010.Execution of the arrangement of instructions contained in main memory1006 causes processor 1004 to perform one or more processes describedherein. One or more processors in a multi-processing arrangement mayalso be employed to execute the instructions contained in main memory1006. In alternative embodiments, hard-wired circuitry is used in placeof or in combination with software instructions to implement variousembodiments. Thus, embodiments described in the present disclosure arenot limited to any specific combination of hardware circuitry andsoftware.

Computer system 1000 may also include a communication interface 1018coupled to bus 1002. Communication interface 1018 can provide a two-waydata communication coupling to a network link 1020 connected to a localnetwork 1022. By way of example, communication interface 1018 may be adigital subscriber line (DSL) card or modem, an integrated servicesdigital network (ISDN) card, a cable modem, or a telephone modem toprovide a data communication connection to a corresponding type oftelephone line. As another example, communication interface 1018 may bea local area network (LAN) card (e.g. for Ethernet™ or an AsynchronousTransfer Model (ATM) network) to provide a data communication connectionto a compatible LAN. Wireless links can also be implemented. In any suchimplementation, communication interface 1018 sends and receiveselectrical, electromagnetic, or optical signals that carry digital datastreams representing various types of information. Further,communication interface 1018 may include peripheral interface devices,such as a Universal Serial Bus (USB) interface, a PCMCIA (PersonalComputer Memory Card International Association) interface, etc.

Network link 1020 typically provides data communication through one ormore networks to other data devices. By way of example, network link1020 can provide a connection through local network 1022 to a hostcomputer 1024, which has connectivity to a network 1026 (e.g. a widearea network (WAN) or the global packet data communication network nowcommonly referred to as the “Internet”) or to data equipment operated byservice provider. Local network 1022 and network 1026 may both useelectrical, electromagnetic, or optical signals to convey informationand instructions. The signals through the various networks and thesignals on network link 1020 and through communication interface 1018,which communicate digital data with computer system 1000, are exampleforms of carrier waves bearing the information and instructions.

Computer system 1000 may send messages and receive data, includingprogram code, through the network(s), network link 1020, andcommunication interface 1018. In the Internet example, a server (notshown) might transmit requested code belonging to an application programfor implementing an embodiment of the present disclosure through network1026, local network 1022 and communication interface 1018. Processor1004 executes the transmitted code while being received and/or store thecode in storage device 1010, or other non-volatile storage for laterexecution. In this manner, computer system 1000 obtains application codein the form of a carrier wave.

The term “computer-readable medium” as used herein refers to any mediumthat participates in providing instructions to processor 1004 forexecution. Such a medium may take many forms, including but not limitedto non-volatile media, volatile media, and transmission media.Non-volatile media include, for example, optical or magnetic disks, suchas storage device 1010. Volatile media may include dynamic memory, suchas main memory 1006. Transmission media may include coaxial cables,copper wire and fiber optics, including the wires that comprise bus1002. Transmission media can also take the form of acoustic, optical, orelectromagnetic waves, such as those generated during radio frequency(RF) and infrared (IR) data communications. Common forms ofcomputer-readable media include, for example, a floppy disk, a flexibledisk, hard disk, magnetic tape, any other magnetic medium, a CD ROM,CDRW, DVD, any other optical medium, punch cards, paper tape, opticalmark sheets, any other physical medium with patterns of holes or otheroptically recognizable indicia, a RAM, a PROM, and EPROM, a FLASH EPROM,any other memory chip or cartridge, a carrier wave, or any other mediumfrom which a computer can read.

Various forms of computer-readable media may be involved in providinginstructions to a processor for execution. By way of example, theinstructions for carrying out at least part of the present disclosuremay initially be borne on a magnetic disk of a remote computer. In sucha scenario, the remote computer loads the instructions into main memoryand sends the instructions over a telephone line using a modem. A modemof a local computer system receives the data on the telephone line anduses an infrared transmitter to convert the data to an infrared signaland transmit the infrared signal to a portable computing device, such asa personal digital assistance (PDA) and a laptop. An infrared detectoron the portable computing device receives the information andinstructions borne by the infrared signal and places the data on a bus.The bus conveys the data to main memory, from which a processorretrieves and executes the instructions. The instructions received bymain memory may optionally be stored on storage device either before orafter execution by processor.

FIG. 11 illustrates a chip set 1100 in which embodiments of thedisclosure may be implemented. Chip set 1100 can include, for instance,processor and memory components described with respect to FIG. 11incorporated in one or more physical packages. By way of example, aphysical package includes an arrangement of one or more materials,components, and/or wires on a structural assembly (e.g., a baseboard) toprovide one or more characteristics such as physical strength,conservation of size, and/or limitation of electrical interaction.

In one embodiment, chip set 1100 includes a communication mechanism suchas a bus 1002 for passing information among the components of the chipset 1100. A processor 1104 has connectivity to bus 1102 to executeinstructions and process information stored in a memory 1106. Processor1104 includes one or more processing cores with each core configured toperform independently. A multi-core processor enables multiprocessingwithin a single physical package. Examples of a multi-core processorinclude two, four, eight, or greater numbers of processing cores.Alternatively or in addition, processor 1104 includes one or moremicroprocessors configured in tandem via bus 1102 to enable independentexecution of instructions, pipelining, and multithreading. Processor1004 may also be accompanied with one or more specialized components toperform certain processing functions and tasks such as one or moredigital signal processors (DSP) 1108, and/or one or moreapplication-specific integrated circuits (ASIC) 1110. DSP 1108 cantypically be configured to process real-world signals (e.g., sound) inreal time independently of processor 1104. Similarly, ASIC 1110 can beconfigured to performed specialized functions not easily performed by ageneral purposed processor. Other specialized components to aid inperforming the inventive functions described herein include one or morefield programmable gate arrays (FPGA) (not shown), one or morecontrollers (not shown), or one or more other special-purpose computerchips.

Processor 1104 and accompanying components have connectivity to thememory 1106 via bus 1102. Memory 1106 includes both dynamic memory(e.g., RAM) and static memory (e.g., ROM) for storing executableinstructions that, when executed by processor 1104, DSP 1108, and/orASIC 1110, perform the process of example embodiments as describedherein. Memory 1106 also stores the data associated with or generated bythe execution of the process.

As used herein, the term module might describe a given unit offunctionality that can be performed in accordance with one or moreembodiments of the present application. As used herein, a module mightbe implemented utilizing any form of hardware, software, or acombination thereof. For example, one or more processors, controllers,ASICs, PLAs, PALs, CPLDs, FPGAs, logical components, software routinesor other mechanisms might be implemented to make up a module. Inimplementation, the various modules described herein might beimplemented as discrete modules or the functions and features describedcan be shared in part or in total among one or more modules. In otherwords, as would be apparent to one of ordinary skill in the art afterreading this description, the various features and functionalitydescribed herein may be implemented in any given application and can beimplemented in one or more separate or shared modules in variouscombinations and permutations. Even though various features or elementsof functionality may be individually described or claimed as separatemodules, one of ordinary skill in the art will understand that thesefeatures and functionality can be shared among one or more commonsoftware and hardware elements, and such description shall not requireor imply that separate hardware or software components are used toimplement such features or functionality.

Where components or modules of the application are implemented in wholeor in part using software, in one embodiment, these software elementscan be implemented to operate with a computing or processing modulecapable of carrying out the functionality described with respectthereto. One such example computing module is shown in FIG. 10. Variousembodiments are described in terms of this example-computing module1000. After reading this description, it will become apparent to aperson skilled in the relevant art how to implement the applicationusing other computing modules or architectures.

Although described above in terms of various exemplary embodiments andimplementations, it should be understood that the various features,aspects and functionality described in one or more of the individualembodiments are not limited in their applicability to the particularembodiment with which they are described, but instead can be applied,alone or in various combinations, to one or more of the otherembodiments of the present application, whether or not such embodimentsare described and whether or not such features are presented as being apart of a described embodiment. Thus, the breadth and scope of thepresent application should not be limited by any of the above-describedexemplary embodiments.

Terms and phrases used in the present application, and variationsthereof, unless otherwise expressly stated, should be construed as openended as opposed to limiting. As examples of the foregoing: the term“including” should be read as meaning “including, without limitation” orthe like; the term “example” is used to provide exemplary instances ofthe item in discussion, not an exhaustive or limiting list thereof; theterms “a” or “an” should be read as meaning “at least one,” “one ormore” or the like; and adjectives such as “conventional,” “traditional,”“normal,” “standard,” “known” and terms of similar meaning should not beconstrued as limiting the item described to a given time period or to anitem available as of a given time, but instead should be read toencompass conventional, traditional, normal, or standard technologiesthat may be available or known now or at any time in the future.Likewise, where this document refers to technologies that would beapparent or known to one of ordinary skill in the art, such technologiesencompass those apparent or known to the skilled artisan now or at anytime in the future.

The use of the term “module” does not imply that the components orfunctionality described or claimed as part of the module are allconfigured in a common package. Indeed, any or all of the variouscomponents of a module, whether control logic or other components, canbe combined in a single package or separately maintained and can furtherbe distributed in multiple groupings or packages or across multiplelocations.

Additionally, the various embodiments set forth herein are described interms of exemplary block diagrams, flow charts and other illustrations.As will become apparent to one of ordinary skill in the art afterreading this document, the illustrated embodiments and their variousalternatives can be implemented without confinement to the illustratedexamples. For example, block diagrams and their accompanying descriptionshould not be construed as mandating a particular architecture orconfiguration.

What is claimed is:
 1. A method, comprising: receiving an originallayered belief low-density parity-check (LDPC) decoder table, theoriginal layered belief LDPC decoder table comprising a plurality ofrows, each row associated with a group of parity check equations andcontaining a plurality of elements, wherein each of the plurality ofelements specifies a location in a random access memory (RAM) where asoft decision is stored; and modifying the original layered belief LDPCdecoder table by increasing the distance between a first element and asecond element of the original decoder table that specify a samelocation in the RAM, thereby creating a modified layered belief LDPCdecoder table.
 2. The method of claim 1, wherein a number of collisionsthat occur from decoding codewords using the modified layered beliefLDPC decoder table is less than a number of collisions that occur fromdecoding codewords using the original layered belief LDPC decoder table.3. The method of claim 1, wherein modifying the original layered beliefLDPC decoder table comprises rearranging two or more of the plurality ofrows.
 4. The method of claim 3, wherein modifying the original layeredbelief LDPC decoder table comprises rearranging two or more elementswithin one of the plurality of rows.
 5. The method of claim 1, whereinmodifying the original layered belief LDPC decoder table comprisesrearranging two or more elements within one of the plurality of rows. 6.The method of claim 1, wherein modifying the original layered beliefLDPC decoder table comprises adding a spacer row between two of theplurality of rows.
 7. The method of claim 1, further comprising:receiving a demodulated signal comprising a codeword encoded usinglayered belief LDPC encoding; and decoding the codeword using a layeredbelief LDPC decoder, wherein the layered belief LDPC decoder writes softdecisions to the RAM using the modified decoder table.
 8. A decoder fora receiver, the decoder comprising: an input buffer that receivesdemodulated signals; a RAM that stores soft decisions; and anon-transitory computer readable memory storing a layered belieflow-density parity-check (LDPC) decoder table, the layered belief LDPCdecoder table comprising a plurality of rows, each row associated with agroup of parity check equations and containing a plurality of elements,wherein each of the plurality of elements specifies a location in theRAM where a soft decision is stored; wherein the layered belief LDPCdecoder table further comprises a spacer row.
 9. The decoder of claim 8,wherein the spacer row is contained between two of the plurality of rowsof the LDPC decoder table.
 10. The decoder of claim 9 wherein, thespacer row comprises a same number of elements as each of the pluralityof rows, wherein the spacer row does not read soft decisions into theRAM or store soft decisions from the RAM.
 11. The decoder of claim 10,wherein the spacer row introduces a computation delay between read orwrite operations on a same RAM address by the decoder.
 12. The decoderof claim 10, wherein a number of collisions that occur from the decoderdecoding codewords using the layered belief LDPC decoder table is lessthan a number of collisions that would occur from the decoder decodingcodewords using the layered belief LDPC decoder table without the spacerrow.
 13. A non-transitory computer readable medium having executableinstructions stored thereon, that when executed by a processor, cause asystem to perform operations of: receiving an original layered belieflow-density parity-check (LDPC) decoder table, the original layeredbelief LDPC decoder table comprising a plurality of rows, each rowassociated with a group of parity check equations and containing aplurality of elements, wherein each of the plurality of elementsspecifies a location in a random access memory (RAM) where a softdecision is stored; and modifying the original layered belief LDPCdecoder table by increasing the distance between a first element and asecond element of the original decoder table that specify a samelocation in the RAM, thereby creating a modified layered belief LDPCdecoder table.
 14. The non-transitory computer readable medium of claim13, wherein a number of collisions that occur from decoding codewordsusing the modified layered belief LDPC decoder table is less than anumber of collisions that occur from decoding codewords using theoriginal layered belief LDPC decoder table.
 15. The non-transitorycomputer readable medium of claim 13, wherein modifying the originallayered belief LDPC decoder table comprises rearranging two or more ofthe plurality of rows.
 16. The non-transitory computer readable mediumof claim 15, wherein modifying the original layered belief LDPC decodertable comprises rearranging two or more elements within one of theplurality of rows.
 17. The non-transitory computer readable medium ofclaim 13, wherein modifying the original layered belief LDPC decodertable comprises rearranging two or more elements within one of theplurality of rows.
 18. The non-transitory computer readable medium ofclaim 13, wherein modifying the original layered belief LDPC decodertable comprises adding a spacer row between two of the plurality ofrows.
 19. The non-transitory computer readable medium of claim 13,wherein the instructions, when executed by the processor, further causethe system to perform operations of: receiving a demodulated signalcomprising a codeword encoded using layered belief LDPC encoding; anddecoding the codeword using a layered belief LDPC decoder, wherein thelayered belief LDPC decoder writes soft decisions to the RAM using themodified decoder table.